LEVEL_VERSION(1)
SET_GENERATE_SPEED(400)
START_MONEY(PLAYER0,2500)
START_MONEY(PLAYER1,42500)
START_MONEY(PLAYER2,42500)
MAX_CREATURES(PLAYER0,18)
MAX_CREATURES(PLAYER1,25)
MAX_CREATURES(PLAYER2,25)

COMPUTER_PLAYER(PLAYER1,0)
COMPUTER_PLAYER(PLAYER2,0)
ALLY_PLAYERS(PLAYER1,PLAYER2,3)
ALLY_PLAYERS(PLAYER2,PLAYER1,3)
SET_GAME_RULE(AlliesShareVision,1)
SET_GAME_RULE(AlliesShareCta,1)
SET_GAME_RULE(ImpWorkExperience,300)
SET_CREATURE_PROPERTY(IMP,NO_IMPRISONMENT,1)

QUICK_OBJECTIVE(1,"Be wary in which direction you go some are more Relaxed others are Dangerous but dont take to much time in making decisions or your Enemies will be far ahead and stomp your Dungeon into the Ground.")
QUICK_INFORMATION(6,"Be Sure to Check out all Communitymade Maps on: https://keeperfx.net/workshop/browse")


ADD_CREATURE_TO_POOL(TROLL,20)
ADD_CREATURE_TO_POOL(SPIDER,20)
ADD_CREATURE_TO_POOL(SORCEROR,20)
ADD_CREATURE_TO_POOL(ORC,20)
ADD_CREATURE_TO_POOL(BILE_DEMON,20)
ADD_CREATURE_TO_POOL(DRAGON,20)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,20)

CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,0)
CREATURE_AVAILABLE(PLAYER0,SPIDER,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,0)
CREATURE_AVAILABLE(PLAYER1,BILE_DEMON,1,0)
CREATURE_AVAILABLE(PLAYER2,BILE_DEMON,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DARK_MISTRESS,1,0)

ROOM_AVAILABLE(ALL_PLAYERS,TREASURE,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,LAIR,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER1,TRAINING,1,1)
ROOM_AVAILABLE(PLAYER2,TRAINING,1,1)
ROOM_AVAILABLE(PLAYER1,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER2,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER0,BRIDGE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,PRISON,1,0)
ROOM_AVAILABLE(PLAYER1,TORTURE,1,0)
ROOM_AVAILABLE(PLAYER2,TORTURE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
ROOM_AVAILABLE(PLAYER0,GRAVEYARD,1,0)

MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_POSSESS,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HOLD_AUDIENCE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CHICKEN,1,0)

TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LAVA,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,BOULDER,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)

DOOR_AVAILABLE(ALL_PLAYERS,STEEL,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,MAGIC,1,0)

CREATE_PARTY(harass1)
	ADD_TO_PARTY(harass1,BARBARIAN,4,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass1,BARBARIAN,4,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass1,ARCHER,4,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass1,ARCHER,4,100,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(harass2)
	ADD_TO_PARTY(harass2,THIEF,5,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass2,THIEF,5,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass2,WITCH,5,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass2,WITCH,5,100,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(harass3)
	ADD_TO_PARTY(harass3,SAMURAI,7,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass3,SAMURAI,7,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass3,THIEF,7,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass3,FAIRY,7,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass3,DWARFA,7,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass3,DWARFA,7,100,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(harass4)
	ADD_TO_PARTY(harass4,ARCHER,9,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass4,ARCHER,9,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass4,TIME_MAGE,9,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass4,TIME_MAGE,9,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass4,BARBARIAN,9,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass4,GIANT,9,100,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(harass5)
	ADD_TO_PARTY(harass5,Knight,10,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass5,FAIRY,10,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass5,FAIRY,10,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass5,GIANT,10,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass5,DWARFA,10,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass5,ARCHER,10,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass5,SAMURAI,10,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(harass5,SAMURAI,10,100,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(AI)
	ADD_TO_PARTY(AI,WIZARD,8,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(AI,WIZARD,8,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(AI,WITCH,8,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(AI,SAMURAI,8,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(AI,BARBARIAN,8,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(AI,ARCHER,8,100,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(Heart)
	ADD_TO_PARTY(Heart,AVATAR,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart,KNIGHT,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart,KNIGHT,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart,FAIRY,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart,FAIRY,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart,HORNY,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart,HORNY,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart,SAMURAI,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart,SAMURAI,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart,TIME_MAGE,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart,TIME_MAGE,10,100,DEFEND_HEART,0)

CREATE_PARTY(Heart1)
	ADD_TO_PARTY(Heart1,WITCH,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart1,WITCH,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart1,BARBARIAN,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart1,BARBARIAN,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart1,GIANT,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart1,GIANT,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart1,DWARFA,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart1,DWARFA,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart1,WIZARD,10,100,DEFEND_HEART,0)
	ADD_TO_PARTY(Heart1,WIZARD,10,100,DEFEND_HEART,0)




IF(PLAYER0,RESEARCH >= 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass1,-5,1)
	ROOM_AVAILABLE(PLAYER0,RESEARCH,1,1)
ENDIF

IF(PLAYER0,TORTURE >= 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass1,-6,1)
	ROOM_AVAILABLE(PLAYER0,TORTURE,1,1)
ENDIF

IF(PLAYER0,TRAINING >= 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass1,-3,1)
	ROOM_AVAILABLE(PLAYER0,TRAINING,1,1)
ENDIF

IF_SLAB_TYPE(54,48,PRETTY_PATH)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass1,-4,1)
ENDIF

IF(PLAYER0,ENTRANCE >= 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass2,-4,1)
ENDIF



IF_SLAB_TYPE(3,46,PRETTY_PATH)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass2,-6,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass2,-3,1)
ENDIF

IF(PLAYER0,TEMPLE >= 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass3,-5,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass3,-4,1)
	SET_TIMER(PLAYER_GOOD,TIMER0)
	QUICK_INFORMATION(4,"Hurry Up my Liege, as Long as the Heroes Fortress is alive they will mobilize every Unit they can to harass you!")
ENDIF

IF(PLAYER_GOOD,TIMER0 >= 8500)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass4,-6,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass3,-3,1)
	SET_TIMER(PLAYER_GOOD,TIMER1)
ENDIF

IF(PLAYER_GOOD,TIMER1 >= 9000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass5,-5,1)
	SET_TIMER(PLAYER_GOOD,TIMER2)
ENDIF

IF(PLAYER_GOOD,FLAG0 == 0)
	IF(PLAYER_GOOD,TIMER2 >= 8500)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass5,-5,1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,harass5,-5,1)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER_GOOD,TIMER2)
	ENDIF
ENDIF

IF(PLAYER_GOOD,DUNGEON_DESTROYED == 1)
	SET_FLAG(PLAYER_GOOD,FLAG0,1)
ENDIF

IF(PLAYER_GOOD,DUNGEON_DESTROYED == 0)
	IF_ACTION_POINT(1,PLAYER0)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,Heart,4,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,Heart1,4,1)
	ENDIF
ENDIF

IF(PLAYER_GOOD,DUNGEON_DESTROYED == 0)
	IF_ACTION_POINT(2,PLAYER1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,Heart,4,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,Heart1,4,1)
	ENDIF
ENDIF


IF(PLAYER_GOOD,DUNGEON_DESTROYED == 0)
	IF_ACTION_POINT(3,PLAYER2)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,Heart,4,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,Heart1,4,1)
	ENDIF
ENDIF


IF(PLAYER_GOOD,DUNGEON_DESTROYED == 0)
	IF_ACTION_POINT(5,PLAYER2)
		ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,AI,-2,DUNGEON_HEART,2,8,2500)	
		SET_TIMER(PLAYER2,TIMER0)
	ENDIF
ENDIF

IF(PLAYER_GOOD,DUNGEON_DESTROYED == 0)
	IF(PLAYER_GOOD,FLAG1 == 0)
		IF(PLAYER2,TIMER0 >= 8000)
			NEXT_COMMAND_REUSABLE
			ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,AI,-2,DUNGEON_HEART,2,8,2500)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER2,TIMER0)
		ENDIF
	ENDIF	
ENDIF

IF(PLAYER_GOOD,DUNGEON_DESTROYED == 0)
	IF_ACTION_POINT(6,PLAYER1)
		ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,AI,-1,DUNGEON_HEART,1,8,2500)
		SET_TIMER(PLAYER1,TIMER0)
	ENDIF
ENDIF

IF(PLAYER_GOOD,DUNGEON_DESTROYED == 0)
	IF(PLAYER_GOOD,FLAG2 == 0)
		IF(PLAYER1,TIMER0 >= 8000)
			NEXT_COMMAND_REUSABLE
			ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,AI,-1,DUNGEON_HEART,1,8,2500)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER1,TIMER0)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER1,DUNGEON_DESTROYED == 1)
	SET_FLAG(PLAYER_GOOD,FLAG2,2)
ENDIF

IF(PLAYER2,DUNGEON_DESTROYED == 1)
	SET_FLAG(PLAYER_GOOD,FLAG1,2)
ENDIF

IF_ACTION_POINT(8,PLAYER2)
	ROOM_AVAILABLE(PLAYER2,BRIDGE,1,1)
	SET_FLAG(PLAYER_GOOD,FLAG1,1)
	SET_GAME_RULE(AlliesShareDrop,1)
ENDIF

IF_ACTION_POINT(7,PLAYER1)
	ROOM_AVAILABLE(PLAYER1,BRIDGE,1,1)
	SET_FLAG(PLAYER_GOOD,FLAG2,1)
	SET_GAME_RULE(AlliesShareDrop,1)
ENDIF

IF_ACTION_POINT(5,PLAYER2)
	QUICK_INFORMATION(2,"Be Careful one of your Enemies entered the Hero Dungeon!")
ENDIF

IF_ACTION_POINT(6,PLAYER1)
	QUICK_INFORMATION(3,"Carefull one of your Enemies entered the Hero Dungeon!")
ENDIF

REM Imp limitation

IF_CONTROLS(PLAYER1,IMP < 16)
  NEXT_COMMAND_REUSABLE
  MAGIC_AVAILABLE(PLAYER1,POWER_IMP,1,1)
 ENDIF

IF_CONTROLS(PLAYER1,IMP >= 16)
  NEXT_COMMAND_REUSABLE
  MAGIC_AVAILABLE(PLAYER1,POWER_IMP,0,0)
ENDIF

IF_CONTROLS(PLAYER2,IMP < 16)
  NEXT_COMMAND_REUSABLE
  MAGIC_AVAILABLE(PLAYER2,POWER_IMP,1,1)
 ENDIF

IF_CONTROLS(PLAYER2,IMP >= 16)
  NEXT_COMMAND_REUSABLE
  MAGIC_AVAILABLE(PLAYER2,POWER_IMP,0,0)
ENDIF




REM MAX CREATURES PLAYER0

IF_CONTROLS(PLAYER0,TOTAL_CREATURES >= 35)
	NEXT_COMMAND_REUSABLE
	SET_CREATURE_TENDENCIES(PLAYER1,IMPRISON,0)
	NEXT_COMMAND_REUSABLE
	SET_CREATURE_TENDENCIES(PLAYER2,IMPRISON,0)
	NEXT_COMMAND_REUSABLE
	SET_GAME_RULE(TortureConvertChance,0)
	NEXT_COMMAND_REUSABLE
	SET_GAME_RULE(PrisonSkeletonChance,0)
	NEXT_COMMAND_REUSABLE
	SET_GAME_RULE(BodiesForVampire,100)
	QUICK_INFORMATION(5,"Seems like something is blocking your way to get more Creatures now that you have 35 under your control... did some old curse cause this?")
ENDIF

IF_CONTROLS(PLAYER0,TOTAL_CREATURES < 35)
	NEXT_COMMAND_REUSABLE
	SET_CREATURE_TENDENCIES(PLAYER1,IMPRISON,1)
	NEXT_COMMAND_REUSABLE
	SET_CREATURE_TENDENCIES(PLAYER2,IMPRISON,1)
	NEXT_COMMAND_REUSABLE
	SET_GAME_RULE(TortureConvertChance,100)
	NEXT_COMMAND_REUSABLE
	SET_GAME_RULE(PrisonSkeletonChance,100)
	NEXT_COMMAND_REUSABLE
	SET_GAME_RULE(BodiesForVampire,8)
ENDIF

IF_CONTROLS(PLAYER0,VAMPIRE >= 4)
	NEXT_COMMAND_REUSABLE
	SET_GAME_RULE(BodiesForVampire,100)
ENDIF

IF_CONTROLS(PLAYER0,VAMPIRE < 4)
	NEXT_COMMAND_REUSABLE
	SET_GAME_RULE(BodiesForVampire,8)
ENDIF

IF(PLAYER0,ALL_DUNGEONS_DESTROYED == 1)
	WIN_GAME
ENDIF
